package com.piesat.quake.business.device.model;

import com.piesat.quake.business.device.mqtt.anno.CharField;
import com.piesat.quake.business.device.mqtt.anno.ConvertField;
import com.piesat.quake.business.device.mqtt.anno.PipelineNode;
import com.piesat.quake.business.device.mqtt.convert.TimestampConvert;

/**
 * 触发事件报文
 * 设备上行 QoS0
 * @author Gersy
 * @date 2023/2/14
 * @since 1.0
 */
@PipelineNode(preNodes = {BaseModel.class})
public class DeviceEvent extends BaseModel{
    //触发号⑧	Int	4B	采集站点从运行开始，累计触发的次数。
    private int number;
    //触发开始时间戳	Double	8B	格林威治时间1970年01月01日00时00分00秒（北京时间1970年01月01日08时00分00秒）起至地震触发开始时间的总秒数。
    @ConvertField(length = 8, convert = TimestampConvert.class)
    private double eventTimestamp;
    //事件触发原因	Byte	1B	1表示产生地震阈值触发（二进制1）；
    //2表示产生地震STA/LTA比值触发（二进制10）；
    //...（可扩展）
    //多种方式均检测到地震触发则数值相加；
    private byte eventCause;
    //烈度	Char	1B	自上次报文发送始的时间间隔内的地震烈度。
    @CharField(1)
    private String intensity;
    //振幅	Float	4B	自上次报文发送始的时间间隔内统计到的最大振幅。
    private float oscillation;
    //STA/LTA比值	Float	4B	自上次报文发送始的时间间隔内统计到的最大STA/LTA比值。
    private float staLta;
    //最大振幅	Float	4B	从触发开始，到目前时间内统计到的最大振幅。
    private float maxOscillation;
    //最大STA/LTA比值	Float	4B	从触发开始，到目前时间内统计到的最大STA/LTA比值。
    private float maxStaLta;

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public double getEventTimestamp() {
        return eventTimestamp;
    }

    public void setEventTimestamp(double eventTimestamp) {
        this.eventTimestamp = eventTimestamp;
    }

    public byte getEventCause() {
        return eventCause;
    }

    public void setEventCause(byte eventCause) {
        this.eventCause = eventCause;
    }

    public String getIntensity() {
        return intensity;
    }

    public void setIntensity(String intensity) {
        this.intensity = intensity;
    }

    public float getOscillation() {
        return oscillation;
    }

    public void setOscillation(float oscillation) {
        this.oscillation = oscillation;
    }

    public float getStaLta() {
        return staLta;
    }

    public void setStaLta(float staLta) {
        this.staLta = staLta;
    }

    public float getMaxOscillation() {
        return maxOscillation;
    }

    public void setMaxOscillation(float maxOscillation) {
        this.maxOscillation = maxOscillation;
    }

    public float getMaxStaLta() {
        return maxStaLta;
    }

    public void setMaxStaLta(float maxStaLta) {
        this.maxStaLta = maxStaLta;
    }
}
